# models/sys_menu.py
from sqlalchemy import Column, String, Date, DateTime, Boolean, Integer
from src.core.ormdb import Base
from src.core import str_utils as strU


class SysMenu(Base):
    __tablename__ = "sys_menu"
    __table_args__ = {"comment": "系统菜单表"}

    id = Column(String(36), primary_key=True, default=lambda: strU.generate_id(), comment="唯一标识ID")
    api_id = Column(String(36), nullable=True, comment="API主键，用于关联其他系统")
    parent_id = Column(String(36), nullable=False, default="0", comment="父节点ID，根节点为 0")
    menu_index = Column(String(64), nullable=False, unique=True, comment="前端路由唯一标识")
    label = Column(String(64), nullable=False, comment="菜单名称")
    icon = Column(String(64), nullable=True, comment="图标组件名")
    path = Column(String(128), nullable=True, comment="视图文件路径")
    sort_order = Column(Integer, default=0, comment="同级排序，小值在前")
    status = Column(Boolean, default=True, comment="状态：1-启用 0-禁用")
    deletion_mark = Column(Boolean, default=False, comment="删除标志，0表示未删除，1表示已删除")
    deletion_reason = Column(String(255), nullable=True, comment="删除原因，记录删除的具体原因")
    deletion_date = Column(DateTime, nullable=True, comment="删除日期，记录删除的时间")
    deletion_by = Column(String(255), nullable=True, comment="删除者，记录删除操作的执行者")
    # create_date = Column(DateTime, default="now()", comment="创建日期，记录创建的时间")
    create_date = Column(DateTime, default=lambda: strU.now(), comment="创建日期，记录创建的时间")
    creator_by = Column(String(255), nullable=True, comment="创建者，记录创建操作的执行者")
    last_updated_date = Column(DateTime, nullable=True, comment="最后更新时间，记录最后更新的时间")
    last_updated_by = Column(String(255), nullable=True, comment="最后更新者，记录最后更新操作的执行者")
